<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const p =new Promise((resolve,reject)=>{
            setTimeout(()=>{
                reject('出错了');
            },3000)
        });
        // Promise是一个微任务
// 调用then方法， then方法的返回结果是Promise对象，对象状态由回调函数的执行函数决定
// 1.如果回调函数中返回的结果是 非promise类型的属性，状态为成功，返回值为对象的成功的值
        const result = p.then(value=>{
            console.log(value);
            // 非promise类型的属性
            // 不写return 返回的是undefined
            // return ' iloveyou'
            //2.是promise对象
            return new Promise((resolve,reject)=>{
                // reject('error');
                resolve('ok');
                // 3.抛出错误
                throw '出错啦';

            })

        },reason=>{
            console.log(reason);
        });


        //回调地狱：就是函数作为参数层层嵌套 有3个异步请求，第二个以及第三个需要用到前面请求成功的数据，我们会想着，层层嵌套函数来进行处理
        // 链式调用  回调地狱时从外到里反复穿梭，链式调用就是从上至下的调用


        p.then(value=>{

        }).then(value=>{})

        console.log(result);
    </script>
</body>
</html>